# 基础镜像选择
FROM node:18-alpine

# 设置工作目录
WORKDIR /usr/src/app

# 安装依赖
# 首先复制package.json和package-lock.json（如果存在）
# 这样可以利用Docker缓存机制，避免每次代码变更都重新安装依赖
COPY package*.json ./

# 使用npm ci而不是npm install，确保精确匹配package-lock.json中的版本
# 生产环境不安装devDependencies
RUN npm ci --only=production

# 复制应用程序代码
# .dockerignore文件应该排除node_modules和其他不需要的文件
COPY . .

# 设置环境变量
ENV NODE_ENV=production
ENV PORT=3000

# 暴露端口
EXPOSE 3000

# 启动命令
CMD ["node", "src/server.js"]